/**
 * 虚拟节点VNode
 */

export class VNode {

  /**
   * 
   * @param {*tag标签类型如DIV} tag 
   * @param {*对应的真实dom节点} elm 
   * @param {*当前节点的子节点} children 
   * @param {*节点文本内容（只有文本节点和注释节点有）} text 
   * @param {*虚拟节点数据，预留字段} data 
   * @param {*父级节点} parent 
   * @param {*节点类型} nodeType 
   */
  constructor(tag, elm, children, text, data, parent, nodeType) {
    this.tag = tag;
    this.elm = elm;
    this.children = children;
    this.text = text;
    this.data = data; //用于虚拟节点存放模板
    this.parent = parent;
    this.nodeType = nodeType;
    this.env = {}; //节点的环境变量,用于存放自己声明的变量
    this.instructions = null; //用于存放指令
    this.template = []; //当前节点涉及到的模板，可能用不到
  }
}
